const Koa = require('koa2')
const app = new Koa()
const KoaCors = require('koa2-cors')
const KoaStatic = require('koa-static')
const KoaBody = require('koa-body')
const KoaJwt = require('koa-jwt') // 主要提供路有权限控制的功能，它会对需要限制的资源请求进行检查
const routers = require('./api')
const JwtSecret = 'Niu2022'  // 必须与登录时签发的secret一致

app.use(function(ctx, next) {
	return next().catch((err) => {
		if (err.status === 401) {
			ctx.status = 401;
			ctx.body = '授权已过期';
		} else {
			throw err;
		}
	});
})

app
	.use(KoaCors())
	.use(KoaStatic('./static'))
	.use(KoaJwt({
		secret: JwtSecret
	}).unless({
		path: [/goodslist/, /show/, /login/]  // 过滤不需要授权就可以请求地址
	}))
	.use(KoaBody())
	.use(routers.routes())
	.use(routers.allowedMethods())
	.listen('9999', 'localhost', () => {
		console.log('服务器运行在9999端口上!');
	})
